--[[--
     *
     *  文件 : log.lua
     *  功能 : 记录日志
     *
--]]--

local log = {}

----------------------------------------
-- 全局变量 : 聊天选项、日志选择类型
----------------------------------------

local Log_Config  

-- 现金类型
LOG_CASH_TYPE_CASH  = 0x1
LOG_CASH_TYPE_KAFRA = 0x2

-- 聊天选项 
LOG_CHAT_GLOBAL     = 0x01          -- 公共频道
LOG_CHAT_WHISPER    = 0x02          -- 私聊频道
LOG_CHAT_PARTY      = 0x04          -- 队伍频道
LOG_CHAT_GUILD      = 0x08          -- 工会频道
--LOG_CHAT_MAINCHAT   = 0X10        -- 中央频道(未装实)
LOG_CHAT_ALL        = 0xFF          -- all



-- 日志选择类型
LOG_TYPE_TRADE            = 0x00001			    -- (T) - 记录玩家交易 
LOG_TYPE_PICKDROP_PLAYER  = 0x00002			    -- (P) - 记录物品丢弃/捡起的日志信息 P
LOG_TYPE_NPC              = 0x00004			    -- (S) - 记录(从NPC购买物品/卖东西给NPC)
LOG_TYPE_SCRIPT           = 0x00008			    -- (N) - 记录从NPC脚本中删除/获得的物品详情
LOG_TYPE_CONSUME          = 0x00010			    -- (C) - 记录玩家使用物品的日志信息
LOG_TYPE_PRODUCE          = 0x00020			    -- (O) - 记录玩家创造出来的/当做原材料消耗掉的物品信息
LOG_TYPE_COMMAND          = 0x00040			    -- (A) - 记录玩家创造/删除物品的详情 
LOG_TYPE_STORAGE          = 0x00080			    -- (R) - 记录个人仓库存入/取出的物品信息
LOG_TYPE_GSTORAGE         = 0x00100			    -- (G) - 记录公会仓库存入/取出的物品信息
LOG_TYPE_MAIL             = 0x00200			    -- (E) - 记录邮件发送/接收的物品和金钱交易详情
LOG_TYPE_AUCTION          = 0x00400			    -- (I) - 记录拍卖系统的交易详情
LOG_TYPE_BUYING_STORE     = 0x00800			    -- (B) - 记录采购商店的交易详情
LOG_TYPE_OTHER	          = 0x01000			    -- (X) - 记录其他全部交易
LOG_TYPE_CASH             = 0x02000			    -- ($) - 记录现金点券/免费点券以及购买到的物品 
LOG_TYPE_BOUND_REMOVAL	  = 0x04000			    -- (F) - 记录当公会/队伍解散时, 自动删除的绑定物品信息 
LOG_TYPE_MERGE_ITEM	      = 0x08000			    -- (Z) - 记录融合道具(消耗了什么，融合出什么物品)
LOG_TYPE_QUEST            = 0X10000			    -- (Q) - 记录完成任务后，任务系统给予的物品
LOG_TYPE_LOOT             = LOG_TYPE_CONSUME    -- (L) - 战利品(吞噬怪物的选择/掉落)
LOG_TYPE_ALL              = 0xFFFFF			    -- all


---------------------------------------------------------
-- 局部变量 : 特定类型物品过滤
---------------------------------------------------------

-- 高级过滤器, 用来过滤某些特定类型的物品(掩码选项)
local	LOG_FILTER_NONE     = 0x000    -- 不记录
local	LOG_FILTER_ALL      = 0x001    -- 全都记录下来
local 	LOG_FILTER_HEALING  = 0x002    -- 治愈类物品
local 	LOG_FILTER_ETC_AMMO = 0x004    -- 其他物品
local	LOG_FILTER_USABLE   = 0x008    -- 可用类物品
local	LOG_FILTER_WEAPON   = 0x010    -- 武器
local	LOG_FILTER_ARMOR    = 0x020    -- 盔甲/披肩/鞋子/头饰/装饰品等防具
local	LOG_FILTER_PETITEM  = 0x040    -- 宠物饰品
local	LOG_FILTER_PRICE    = 0x080    -- 记录贵重物品
local	LOG_FILTER_AMOUNT   = 0x100    -- 记录堆叠数量很多的物品
local	LOG_FILTER_REFINE   = 0x200    -- 记录精炼等级超过指定级别的物品
local	LOG_FILTER_CHANCE   = 0x400    -- 记录物品掉率低


--------------------------------------------------------------
-- 局部函数  
-- 辅助函数部分 : 返回选择项类型、返回聊天选项、检查物品设置进行记录 
--------------------------------------------------------------

-- 返回选择项类型
local function  log_picktype2char(pick_type)

    if     pick_type == LOG_TYPE_TRADE             then return 'T'        -- (T)rade
    elseif pick_type == LOG_TYPE_PICKDROP_PLAYER   then return 'P'        -- (P)layer
    elseif pick_type == LOG_TYPE_NPC               then return 'S'        -- NPC (S)hop
    elseif pick_type == LOG_TYPE_SCRIPT            then return 'N'        -- (N)PC Script
    elseif pick_type == LOG_TYPE_CONSUME           then return 'C'        -- (C)onsumed
    elseif pick_type == LOG_TYPE_PRODUCE           then return 'O'        -- Pr(O)duced/Ingredients
    elseif pick_type == LOG_TYPE_COMMAND           then return 'A'        -- (A)dmin command
    elseif pick_type == LOG_TYPE_STORAGE           then return 'R'        -- Sto(R)age
    elseif pick_type == LOG_TYPE_GSTORAGE          then return 'G'        -- (G)uild storage
    elseif pick_type == LOG_TYPE_MAIL              then return 'E'        -- (E)mail attachment
    elseif pick_type == LOG_TYPE_AUCTION           then return 'I'        -- Auct(I)on
    elseif pick_type == LOG_TYPE_BUYING_STORE      then return 'B'        -- (B)uying Stor
    elseif pick_type == LOG_TYPE_LOOT              then return 'L'        -- (L)oot (consumed monster pick/drop)
    elseif pick_type == LOG_TYPE_OTHER             then return 'X'        -- Other
    elseif pick_type == LOG_TYPE_CASH              then return '$'        -- Cash
    elseif pick_type == LOG_TYPE_BOUND_REMOVAL     then return 'F'        -- Removed bound items when guild/party is broken
    elseif pick_type == LOG_TYPE_MERGE_ITEM        then return 'Z'        -- Merged Item
    elseif pick_type == LOG_TYPE_QUEST             then return 'Q'  end   -- (Q)uest Item
end 



-- 返回聊天类型
local function log_chattype2char(chat_type)

    if     chat_type == LOG_CHAT_GLOBAL   then  return 'O'      -- Gl(O)bal 
    elseif chat_type == LOG_CHAT_WHISPER  then  return 'W'      -- (W)hisper
    elseif chat_type == LOG_CHAT_PARTY    then  return 'P'      -- (P)arty
    elseif chat_type == LOG_CHAT_GUILD    then  return 'G'      -- (G)uild
    elseif chat_type == LOG_CHAT_MAINCHAT then  return 'M' end  -- (M)ain chat

    -- 未知聊天类型
    show:debug("log_chattype2char: Unknown chat type %d.\n",chat_type)
    return 'O'
end 

-- 检查这个物品是否应该按照设置进行记录
local function should_log_item(nameid, amount, refine)
end 


---------------------------------------------------------------------------------------
-- 全局函数
-- 函数调用部分 :  记录物品，召唤怪物、物品交易日志、记录金币交易、记录MVP怪物奖励、GM命令(内部测试) 
--               聊天记录、默认设置、读取配置文件
---------------------------------------------------------------------------------------

-- 记录物品交易日志
function log:pick(block_list, pick_type, nameid, amount, item)
end 

-- 记录金币交易
function log:gold(sd, pick_type, src_sd, amount)
end 

-- 记录聊天记录 
function log:chat(chat_type, type_id, src_charid, src_accid, dst_charname, message)
end 

-- 现金记录
function log:cash(sd, pick_type, cash_type, amount)
end 

-- 默认设置
function log:set_default()
end 

-- 读取配置文件  conf/log.conf
function log:config_read( cfgName )
end 

-- 记录MVP怪物奖励(未)
function log:mvpdrop()
end 

-- 记录GM命令(内部测试(未))
function log:atcommand()
end 

-- 记录传递给脚本命令的消息(未)
function log:npc()
end 

-- 记录物品，召唤怪物(未)
function log:branch(sd)
end 


return log